Global Program Optimization: Register Allocation of Static Scalar Objects
نویسندگان
چکیده
Performing certain optimizations on whole programs offers huge potential for code improvement. To exploit this possibility, we implemented a framework that allows sophisticated analysis and transformation of machine code, during or after linkage. This paper presents one of the many applications of our framework: the allocation of global scalar variables into registers. We present the algorithms that select the variables and remove the load and store instructions associated with them. The simulations of the unscheduled code of our benchmarks show that up to 10% of the execution cycles is saved by applying this technique.
منابع مشابه
Register Allocation over the Program Dependence Graph Cindy
This paper describes RAP, a Register Allocator that allocates registers over the Program Dependence Graph (PDG) representation of a program in a hierarchical manner. The PDG program representation has been used successfully for scalar optimizations, the detection and improvement of parallelism for vector machines, multiple processor machines, and machines that exhibit instruction level parallel...
متن کاملThe Design and Implementation of RAP: A PDG-Based Register Allocator
This paper describes the design and implementation of a register allocator that performs the allocation over the Program Dependence Graph (PDG) representation of a routine. The PDG representation has been used successfully as the basis for various scalar optimizations as well as for detecting and improving parallelization for vector machines, multiple processor machines, and architectures that ...
متن کاملIntegrated Register Allocation and Instruction Scheduling with Constraint Programming
This dissertation proposes a combinatorial model, program representations, and constraint solving techniques for integrated register allocation and instruction scheduling in compiler back-ends. In contrast to traditional compilers based on heuristics, the proposed approach generates potentially optimal code by considering all trade-offs between interdependent decisions as a single optimization ...
متن کاملRegister Pressure Guided Unroll-and-Jam
Unroll-and-jam is an effective loop optimization that not only improves cache locality and instruction level parallelism (ILP) but also benefits other loop optimizations such as scalar replacement. However, unroll-and-jam increases register pressure, potentially resulting in performance degradation when the increase in register pressure causes register spilling. In this paper, we present a low ...
متن کاملTowards Global Scheduling and Register Allocation Using Predicated Execution
This paper presents an approach for register allocation and scheduling which relies on three main ideas: global optimization, solution space exploration and on-the-fly generation of a symbolic state machine. To allow global optimizations while preserving semantics, the traditional notion of control dependence is replaced by the notion of predicate. In our approach, predicates are used not only ...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 1999